package com.ssy.lingxi.order.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.model.vo.basic.request.*;
import com.ssy.lingxi.order.model.vo.basic.response.*;
import org.springframework.http.HttpHeaders;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

/**
 * 业务员业绩统计的相关接口
 *
 * @author 郑小翠
 * @version 2.02.18
 * @date 2022-03-14
 */
public interface IMemberSalesAchievementCountService {

    /**
     * 业务员业绩统计查询
     *
     * @param headers 登录信息
     * @param pageVO  业务员业绩统计查询条件
     * @return 返回业务员业绩统计信息
     */
    Wrapper<PageData<MemberSalesAchievementCountVO>> findAllMemberSalesAchievement(HttpHeaders headers, @Valid OrderMemberSalesCountVO pageVO);

    /**
     * 业务员业绩会员统计详情
     *
     * @param headers 登录信息
     * @param pageVO  搜索条件
     * @return 返回会员信息
     */
    Wrapper<PageData<MemberSalesMemberQueryVO>> findByUserId(HttpHeaders headers, @Valid MemberSalesMemberCountVO pageVO);

    /**
     * 业务员业绩商品统计详情
     *
     * @param headers 登录信息
     * @param pageVO  搜索条件
     * @return 返回购买的商品信息
     */
    Wrapper<PageData<MemberSalesCountCommodityQueryVO>> commodityInformation(HttpHeaders headers, @Valid MemberSalesCountCommodityVO pageVO);

    /**
     * 业务员订单明细
     *
     * @param headers 登录信息
     * @param pageVO  搜索条件
     * @return 返回以商品SkuId为维度的订单明细
     */
    Wrapper<PageData<MemberSalesCountOrderDetailsQueryVO>> orderDetails(HttpHeaders headers, @Valid MemberSalesCountOrderDetailsVO pageVO);

    /**
     * 导出业务员业绩统计
     *
     * @param response 网络信息
     * @param pageVO   查询信息
     * @param token    token
     * @param Referer  搜索条件
     */
    void exportFindAllMemberSales(HttpServletResponse response, @Valid MemberSalesCountExportVO pageVO, String token, String Referer);

    /**
     * 导出会员统计信息
     *
     * @param response 网络信息
     * @param token    token
     * @param pageVO   搜索条件
     */
    void exportFindByUserId(HttpServletResponse response, @Valid MemberSalesMemberCountExportVO pageVO, String token);

    /**
     * 导出商品统计
     *
     * @param response 网络信息
     * @param token    token
     * @param pageVO   搜索条件
     */
    void exportCommodityInformation(HttpServletResponse response, @Valid MemberSalesCountCommodityVO pageVO, String token);

    /**
     * 导出订单明细
     *
     * @param response 网络信息
     * @param token    token
     * @param pageVO   搜索条件
     */
    void exportOrderDetails(HttpServletResponse response, @Valid MemberSalesCountOrderDetailsVO pageVO, String token, String referer);
}
